package com.tt.payee.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;

import com.tt.payee.domain.vo_commonc_entity.AbEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author：mingzheng.chen@comeon365.com
 * @date:2020/4/7 13:37
 */
@Data
public class SysUserVo extends AbEntity implements Serializable {

    private static final long serialVersionUID = -7640662032782535636L;

    /**
     * 主键
     */
    @Id
    @ApiModelProperty(value = "uid")
    @Column(name = "uid")
    private Integer uid;

    /**
     * 小程序用户的用户名/一般为手机号码
     */
    @ApiModelProperty(value = "小程序用户名/手机号码")
    @Column(name = "username")
    private String username;

    /**
     *  登陆密码
     */
    @ApiModelProperty(value = "登陆密码")
    @Column(name = "password")
    private String password;

    /**
     *  用户真实姓名
     */
    @ApiModelProperty(value = "用户真实姓名")
    @Column(name = "name")
    private String name;

    /**
     *  用户性别 1为男性 2为女性
     */
    @ApiModelProperty(value = "性别")
    @Column(name = "sex")
    private Integer sex;

    /**
     * 生日日期
     */
    @ApiModelProperty(value = "生日")
    @Column(name = "birthday")
    @JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date birthday;

    /**
     *  所在省市
     */
    @ApiModelProperty(value = "所在省市")
    @Column(name = "area")
    private String area;

    /**
     *  是否为经纪人 1为是 2为否
     */
    @ApiModelProperty(value = "是否为经纪人")
    @Column(name = "vip")
    private Integer vip;

    /**
     *  是否为服务工程师 1为是 2为否
     */
    @ApiModelProperty(value = "是否为工程师")
    @Column(name = "is_engineer")
    private Integer isEngineer;

    /**
     *  用户积分
     */
    @ApiModelProperty(value = "用户积分")
    @Column(name = "point")
    private Double point;


    /**
     * 用户佣金（未提取）
     */
    @ApiModelProperty(value = "用户佣金（未提取）")
    @Column(name = "commission",columnDefinition="tinyint default 0")
    private BigDecimal commission;

    /**
     * 用户全部的佣金 （全部）
     */
    @ApiModelProperty(value = "用户全部的佣金 （全部）")
    @Column(name = "all_commission")
    private BigDecimal allCommission;

    /**
     *  登陆时间
     */
    @ApiModelProperty(value = "登陆时间")
    @Column(name = "logindate")
    @JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date loginDate;

    /**
     *  备注
     */
    @ApiModelProperty(value = "备注")
    @Column(name = "remark")
    private String remark;

    /**
     *  微信 wxUnionId
     */
    @ApiModelProperty(value = "微信 unionid")
    @Column(name = "wx_unionid")
    private String wxUnionId;

    /**
     *  微信 openid
     */
    @ApiModelProperty(value = "微信 openid")
    @Column(name = "wx_openid")
    private String wxOpenId;

    /**
     *  微信名称
     */
    @ApiModelProperty(value = "微信名称")
    @Column(name = "wx_name")
    private String wxName;

    /**
     *  是否为第一次登陆 1为是 0为不是
     */
    @ApiModelProperty(value = "是否为第一次登陆")
    @Column(name = "is_first")
    private Integer isFirst;

    /**
     *  用户邀请码
     */
    @ApiModelProperty(value = "用户邀请码")
    @Column(name = "referral_code")
    private String referralCode;

    /**
     *  用户上级邀请码
     */
    @ApiModelProperty(value = "用户上级邀请码")
    @Column(name = "top_referral_code")
    private String topReferralCode;

    /**
     *  邀请次数(每日刷新)
     */
    @ApiModelProperty(value = "邀请次数")
    @Column(name = "referral_num")
    private Integer referralNum;

    /**
     *  邀请成功的数量
     */
    @ApiModelProperty(value = "邀请成功的数量")
    @Column(name = "referral_succeed_num")
    private Integer referralSucceedNum;

    /**
     *  邀请人
     */
    @ApiModelProperty(value = "邀请人")
    private String referralUser;

    /**
     *  邀请人的手机号码
     */
    @ApiModelProperty(value = "邀请人的手机号码")
    @Column(name = "referral_username")
    private String referralUsername;

    /**
     *  注册日期
     */
    @ApiModelProperty(value = "注册日期")
    @Column(name = "registrydate")
    @JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date registryDate;

    /**
     *登录版本
     **/
    @ApiModelProperty(value="loginVersion")
    @Column(name = "login_version")
    private Integer loginVersion;

    /**
     *创建时间
     **/
    @ApiModelProperty(value="created")
    @Column(name = "created")
    @JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date created;

    /**
     *创建人id
     **/
    @ApiModelProperty(value="createdUserId")
    @Column(name = "created_user_id")
    private Long createdUserId;

    /**
     *创建人姓名
     **/
    @ApiModelProperty(value="createdUserName")
    @Column(name = "created_user_name")
    private String createdUserName;

    /**
     *最近修改时间
     **/
    @ApiModelProperty(value="updated")
    @Column(name = "updated")
    @JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updated;

    /**
     *用户状态   1为启用 0为不启用 -1删除
     **/
    @NotNull(message = "用户状态   1为启用 0为不启用 -1删除不能为空")
    @ApiModelProperty(value="status")
    @Column(name = "status")
    private Integer status;


    /**
     * 验证码
     */
    @ApiModelProperty(value = "验证码")
    private String validateCode;

    /**
     * 订单-带报价数量
     */
    @ApiModelProperty(value = "订单-待报价数量")
    private Integer stayQuoted;

    /**
     * 订单-待支付数量
     */
    @ApiModelProperty(value = "订单-待支付数量")
    private Integer stayPay;

    /**
     * 订单-待发货
     */
    @ApiModelProperty(value = "订单-待发货")
    private Integer stayShip;

    /**
     * 订单-待收货
     */
    @ApiModelProperty(value = "订单-待收货")
    private Integer stayReceipt;

    /**
     * 我的收藏数
     */
    @ApiModelProperty(value = "我的收藏数")
    private Integer favorites;
}
